using UwinEducation.Application.Dtos;
using UwinEducation.Shared.Models;

namespace UwinEducation.Application.Common.Interfaces
{
    /// <summary>
    /// 预约服务接口
    /// </summary>
    public interface IAppointmentService
    {
        /// <summary>
        /// 获取预约分页列表
        /// </summary>
        Task<PagedResult<AppointmentDto>> GetPagedListAsync(AppointmentPageRequest pageRequest);

        /// <summary>
        /// 获取预约详情
        /// </summary>
        Task<AppointmentDto> GetByIdAsync(Guid id);

        /// <summary>
        /// 创建预约
        /// </summary>
        Task<AppointmentDto> CreateAsync(CreateAppointmentDto input);

        /// <summary>
        /// 更新预约
        /// </summary>
        Task<AppointmentDto> UpdateAsync(UpdateAppointmentDto input);

        /// <summary>
        /// 批量更新预约
        /// </summary>
        Task<List<AppointmentDto>> UpdateRangeAsync(List<Guid> appointmentIds);

        /// <summary>
        /// 删除预约
        /// </summary>
        Task DeleteAsync(Guid id);

        /// <summary>
        /// 获取学生的预约列表
        /// </summary>
        Task<List<AppointmentDto>> GetByStudentIdAsync(Guid studentId);

        /// <summary>
        /// 获取教师的预约列表
        /// </summary>
        Task<List<AppointmentDto>> GetByTeacherIdAsync(Guid teacherId);
    }
} 